Completed
Pull Request — master (#227)
by Alejandro
06:25
created

CreateServer.js ➔ render   B

Complexity

Conditions 1

Size

Total Lines 46
Code Lines 42

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1.008

Importance

Changes 0
Metric Value
eloc 42
dl 0
loc 46
ccs 4
cts 5
cp 0.8
rs 8.872
c 0
b 0
f 0
cc 1
crap 1.008
1
import React, { useEffect } from 'react';
2
import { v4 as uuid } from 'uuid';
3
import PropTypes from 'prop-types';
4
import './CreateServer.scss';
5
import { ServerForm } from './helpers/ServerForm';
6
7 1
const SHOW_IMPORT_MSG_TIME = 4000;
8 1
const propTypes = {
9
  createServer: PropTypes.func,
10
  history: PropTypes.shape({
11
    push: PropTypes.func,
12
  }),
13
  resetSelectedServer: PropTypes.func,
14
};
15
16 1
const CreateServer = (ImportServersBtn, useStateFlagTimeout) => {
17 3
  const CreateServerComp = ({ createServer, history: { push }, resetSelectedServer }) => {
18 3
    const [ serversImported, setServersImported ] = useStateFlagTimeout(false, SHOW_IMPORT_MSG_TIME);
19 3
    const handleSubmit = (serverData) => {
20 1
      const id = uuid();
21 1
      const server = { id, ...serverData };
22
23 1
      createServer(server);
24 1
      push(`/server/${id}/list-short-urls/1`);
25
    };
26
27 3
    useEffect(() => {
28
      resetSelectedServer();
29
    }, []);
30
31 3
    return (
32
      <div className="create-server">
33
        <ServerForm onSubmit={handleSubmit}>
34
          <ImportServersBtn onImport={setServersImported} />
35
          <button className="btn btn-outline-primary">Create server</button>
36
        </ServerForm>
37
38
        {serversImported && (
39
          <div className="row create-server__import-success-msg">
40
            <div className="col-md-10 offset-md-1">
41
              <div className="p-2 mt-3 bg-main text-white text-center">
42
                Servers properly imported. You can now select one from the list :)
43
              </div>
44
            </div>
45
          </div>
46
        )}
47
      </div>
48
    );
49
  };
50
51 3
  CreateServerComp.propTypes = propTypes;
52
53 3
  return CreateServerComp;
54
};
55
56
export default CreateServer;
57